{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x_data = np.linspace(-1,1,100)\n",
    "np.random.seed(5)\n",
    "y_data = 2* x_data + np.random.randn(*x_data.shape)*0.4 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x2b0e5612148>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_data,y_data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training epochs: 01 Step 010: loss: 0.014715\n",
      "Training epochs: 01 Step 020: loss: 0.253290\n",
      "Training epochs: 01 Step 030: loss: 0.143054\n",
      "Training epochs: 01 Step 040: loss: 1.389589\n",
      "Training epochs: 01 Step 050: loss: 0.382215\n",
      "Training epochs: 01 Step 060: loss: 0.642117\n",
      "Training epochs: 01 Step 070: loss: 1.355959\n",
      "Training epochs: 01 Step 080: loss: 0.618715\n",
      "Training epochs: 01 Step 090: loss: 0.275236\n",
      "Training epochs: 01 Step 100: loss: 0.877006\n",
      "Training epochs: 02 Step 110: loss: 0.614993\n",
      "Training epochs: 02 Step 120: loss: 0.005396\n",
      "Training epochs: 02 Step 130: loss: 0.029839\n",
      "Training epochs: 02 Step 140: loss: 0.387822\n",
      "Training epochs: 02 Step 150: loss: 0.002012\n",
      "Training epochs: 02 Step 160: loss: 0.045372\n",
      "Training epochs: 02 Step 170: loss: 0.332095\n",
      "Training epochs: 02 Step 180: loss: 0.049918\n",
      "Training epochs: 02 Step 190: loss: 0.000254\n",
      "Training epochs: 02 Step 200: loss: 0.258763\n",
      "Training epochs: 03 Step 210: loss: 0.330364\n",
      "Training epochs: 03 Step 220: loss: 0.000476\n",
      "Training epochs: 03 Step 230: loss: 0.024453\n",
      "Training epochs: 03 Step 240: loss: 0.334342\n",
      "Training epochs: 03 Step 250: loss: 0.002467\n",
      "Training epochs: 03 Step 260: loss: 0.006043\n",
      "Training epochs: 03 Step 270: loss: 0.168828\n",
      "Training epochs: 03 Step 280: loss: 0.001700\n",
      "Training epochs: 03 Step 290: loss: 0.028076\n",
      "Training epochs: 03 Step 300: loss: 0.115142\n",
      "Training epochs: 04 Step 310: loss: 0.157908\n",
      "Training epochs: 04 Step 320: loss: 0.014558\n",
      "Training epochs: 04 Step 330: loss: 0.012009\n",
      "Training epochs: 04 Step 340: loss: 0.343961\n",
      "Training epochs: 04 Step 350: loss: 0.005208\n",
      "Training epochs: 04 Step 360: loss: 0.000913\n",
      "Training epochs: 04 Step 370: loss: 0.118425\n",
      "Training epochs: 04 Step 380: loss: 0.001436\n",
      "Training epochs: 04 Step 390: loss: 0.063055\n",
      "Training epochs: 04 Step 400: loss: 0.067318\n",
      "Training epochs: 05 Step 410: loss: 0.088788\n",
      "Training epochs: 05 Step 420: loss: 0.031492\n",
      "Training epochs: 05 Step 430: loss: 0.006529\n",
      "Training epochs: 05 Step 440: loss: 0.353657\n",
      "Training epochs: 05 Step 450: loss: 0.006447\n",
      "Training epochs: 05 Step 460: loss: 0.000078\n",
      "Training epochs: 05 Step 470: loss: 0.097615\n",
      "Training epochs: 05 Step 480: loss: 0.005833\n",
      "Training epochs: 05 Step 490: loss: 0.085455\n",
      "Training epochs: 05 Step 500: loss: 0.048247\n",
      "Training epochs: 06 Step 510: loss: 0.060631\n",
      "Training epochs: 06 Step 520: loss: 0.042927\n",
      "Training epochs: 06 Step 530: loss: 0.004293\n",
      "Training epochs: 06 Step 540: loss: 0.359261\n",
      "Training epochs: 06 Step 550: loss: 0.007055\n",
      "Training epochs: 06 Step 560: loss: 0.000003\n",
      "Training epochs: 06 Step 570: loss: 0.087976\n",
      "Training epochs: 06 Step 580: loss: 0.009161\n",
      "Training epochs: 06 Step 590: loss: 0.098046\n",
      "Training epochs: 06 Step 600: loss: 0.039808\n",
      "Training epochs: 07 Step 610: loss: 0.048299\n",
      "Training epochs: 07 Step 620: loss: 0.049470\n",
      "Training epochs: 07 Step 630: loss: 0.003325\n",
      "Training epochs: 07 Step 640: loss: 0.362209\n",
      "Training epochs: 07 Step 650: loss: 0.007366\n",
      "Training epochs: 07 Step 660: loss: 0.000049\n",
      "Training epochs: 07 Step 670: loss: 0.083289\n",
      "Training epochs: 07 Step 680: loss: 0.011134\n",
      "Training epochs: 07 Step 690: loss: 0.104766\n",
      "Training epochs: 07 Step 700: loss: 0.035832\n",
      "Training epochs: 08 Step 710: loss: 0.042557\n",
      "Training epochs: 08 Step 720: loss: 0.052981\n",
      "Training epochs: 08 Step 730: loss: 0.002880\n",
      "Training epochs: 08 Step 740: loss: 0.363724\n",
      "Training epochs: 08 Step 750: loss: 0.007525\n",
      "Training epochs: 08 Step 760: loss: 0.000095\n",
      "Training epochs: 08 Step 770: loss: 0.080958\n",
      "Training epochs: 08 Step 780: loss: 0.012211\n",
      "Training epochs: 08 Step 790: loss: 0.108268\n",
      "Training epochs: 08 Step 800: loss: 0.033891\n",
      "Training epochs: 09 Step 810: loss: 0.039776\n",
      "Training epochs: 09 Step 820: loss: 0.054813\n",
      "Training epochs: 09 Step 830: loss: 0.002665\n",
      "Training epochs: 09 Step 840: loss: 0.364497\n",
      "Training epochs: 09 Step 850: loss: 0.007606\n",
      "Training epochs: 09 Step 860: loss: 0.000123\n",
      "Training epochs: 09 Step 870: loss: 0.079785\n",
      "Training epochs: 09 Step 880: loss: 0.012777\n",
      "Training epochs: 09 Step 890: loss: 0.110069\n",
      "Training epochs: 09 Step 900: loss: 0.032925\n",
      "Training epochs: 10 Step 910: loss: 0.038397\n",
      "Training epochs: 10 Step 920: loss: 0.055757\n",
      "Training epochs: 10 Step 930: loss: 0.002559\n",
      "Training epochs: 10 Step 940: loss: 0.364890\n",
      "Training epochs: 10 Step 950: loss: 0.007647\n",
      "Training epochs: 10 Step 960: loss: 0.000139\n",
      "Training epochs: 10 Step 970: loss: 0.079192\n",
      "Training epochs: 10 Step 980: loss: 0.013070\n",
      "Training epochs: 10 Step 990: loss: 0.110992\n",
      "Training epochs: 10 Step 1000: loss: 0.032439\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def model(x,w,b):\n",
    "    return tf.multiply(w,x)+b\n",
    "\n",
    "w = tf.Variable(np.random.randn(),tf.float32)\n",
    "b = tf.Variable(0.0,tf.float32)\n",
    "#x = tf.constant(x_data,tf.float32)\n",
    "#y = tf.constant(y_data,tf.float32)\n",
    "\n",
    "def loss(x,w,b,y):\n",
    "    predicted_y = model(x,w,b)\n",
    "    err = predicted_y - y\n",
    "    square_y = tf.square(err)\n",
    "    return tf.reduce_mean(square_y)\n",
    "\n",
    "training_epochs = 10\n",
    "learning_rate = 0.01\n",
    "\n",
    "def grad(x,w,b,y):\n",
    "    with tf.GradientTape() as tape:\n",
    "        loss_ = loss(x,w,b,y)\n",
    "    return tape.gradient(loss_,[w,b])\n",
    "\n",
    "step = 0\n",
    "loss_list = []\n",
    "display_step = 10\n",
    "\n",
    "for i in range(training_epochs):\n",
    "    for rx,ry in zip(x_data,y_data):\n",
    "        loss_ = loss(rx,w,b,ry)\n",
    "        loss_list.append(loss_)\n",
    "        gw,gb = grad(rx,w,b,ry)\n",
    "        w.assign_sub(gw*learning_rate)\n",
    "        b.assign_sub(gb*learning_rate)\n",
    "        step = step+1\n",
    "        if step % display_step == 0:\n",
    "            print(\"Training epochs:\",\"%02d\" % (i+1),\"Step %03d:\" % (step),\"loss: %.6f\" % (loss_))\n",
    "    plt.plot(x_data,x_data*w.numpy()+b.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: 1.99055\n",
      "b: 1.0367402\n"
     ]
    }
   ],
   "source": [
    "print(\"w:\",w.numpy())\n",
    "print(\"b:\",b.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training epochs: 01 Step 1100: loss: 0.138684\n",
      "Training epochs: 02 Step 1100: loss: 0.138684\n",
      "Training epochs: 03 Step 1100: loss: 0.138684\n",
      "Training epochs: 04 Step 1100: loss: 0.138683\n",
      "Training epochs: 05 Step 1100: loss: 0.138683\n",
      "Training epochs: 06 Step 1100: loss: 0.138683\n",
      "Training epochs: 07 Step 1100: loss: 0.138683\n",
      "Training epochs: 08 Step 1100: loss: 0.138682\n",
      "Training epochs: 09 Step 1100: loss: 0.138682\n",
      "Training epochs: 10 Step 1100: loss: 0.138682\n",
      "Training epochs: 11 Step 1100: loss: 0.138682\n",
      "Training epochs: 12 Step 1100: loss: 0.138682\n",
      "Training epochs: 13 Step 1100: loss: 0.138681\n",
      "Training epochs: 14 Step 1100: loss: 0.138681\n",
      "Training epochs: 15 Step 1100: loss: 0.138681\n",
      "Training epochs: 16 Step 1100: loss: 0.138681\n",
      "Training epochs: 17 Step 1100: loss: 0.138680\n",
      "Training epochs: 18 Step 1100: loss: 0.138680\n",
      "Training epochs: 19 Step 1100: loss: 0.138680\n",
      "Training epochs: 20 Step 1100: loss: 0.138680\n",
      "Training epochs: 21 Step 1100: loss: 0.138680\n",
      "Training epochs: 22 Step 1100: loss: 0.138679\n",
      "Training epochs: 23 Step 1100: loss: 0.138679\n",
      "Training epochs: 24 Step 1100: loss: 0.138679\n",
      "Training epochs: 25 Step 1100: loss: 0.138679\n",
      "Training epochs: 26 Step 1100: loss: 0.138679\n",
      "Training epochs: 27 Step 1100: loss: 0.138679\n",
      "Training epochs: 28 Step 1100: loss: 0.138678\n",
      "Training epochs: 29 Step 1100: loss: 0.138678\n",
      "Training epochs: 30 Step 1100: loss: 0.138678\n",
      "Training epochs: 31 Step 1100: loss: 0.138678\n",
      "Training epochs: 32 Step 1100: loss: 0.138678\n",
      "Training epochs: 33 Step 1100: loss: 0.138678\n",
      "Training epochs: 34 Step 1100: loss: 0.138677\n",
      "Training epochs: 35 Step 1100: loss: 0.138677\n",
      "Training epochs: 36 Step 1100: loss: 0.138677\n",
      "Training epochs: 37 Step 1100: loss: 0.138677\n",
      "Training epochs: 38 Step 1100: loss: 0.138677\n",
      "Training epochs: 39 Step 1100: loss: 0.138677\n",
      "Training epochs: 40 Step 1100: loss: 0.138676\n",
      "Training epochs: 41 Step 1100: loss: 0.138676\n",
      "Training epochs: 42 Step 1100: loss: 0.138676\n",
      "Training epochs: 43 Step 1100: loss: 0.138676\n",
      "Training epochs: 44 Step 1100: loss: 0.138676\n",
      "Training epochs: 45 Step 1100: loss: 0.138676\n",
      "Training epochs: 46 Step 1100: loss: 0.138676\n",
      "Training epochs: 47 Step 1100: loss: 0.138675\n",
      "Training epochs: 48 Step 1100: loss: 0.138675\n",
      "Training epochs: 49 Step 1100: loss: 0.138675\n",
      "Training epochs: 50 Step 1100: loss: 0.138675\n",
      "Training epochs: 51 Step 1100: loss: 0.138675\n",
      "Training epochs: 52 Step 1100: loss: 0.138675\n",
      "Training epochs: 53 Step 1100: loss: 0.138675\n",
      "Training epochs: 54 Step 1100: loss: 0.138674\n",
      "Training epochs: 55 Step 1100: loss: 0.138674\n",
      "Training epochs: 56 Step 1100: loss: 0.138674\n",
      "Training epochs: 57 Step 1100: loss: 0.138674\n",
      "Training epochs: 58 Step 1100: loss: 0.138674\n",
      "Training epochs: 59 Step 1100: loss: 0.138674\n",
      "Training epochs: 60 Step 1100: loss: 0.138674\n",
      "Training epochs: 61 Step 1100: loss: 0.138674\n",
      "Training epochs: 62 Step 1100: loss: 0.138674\n",
      "Training epochs: 63 Step 1100: loss: 0.138673\n",
      "Training epochs: 64 Step 1100: loss: 0.138673\n",
      "Training epochs: 65 Step 1100: loss: 0.138673\n",
      "Training epochs: 66 Step 1100: loss: 0.138673\n",
      "Training epochs: 67 Step 1100: loss: 0.138673\n",
      "Training epochs: 68 Step 1100: loss: 0.138673\n",
      "Training epochs: 69 Step 1100: loss: 0.138673\n",
      "Training epochs: 70 Step 1100: loss: 0.138673\n",
      "Training epochs: 71 Step 1100: loss: 0.138673\n",
      "Training epochs: 72 Step 1100: loss: 0.138672\n",
      "Training epochs: 73 Step 1100: loss: 0.138672\n",
      "Training epochs: 74 Step 1100: loss: 0.138672\n",
      "Training epochs: 75 Step 1100: loss: 0.138672\n",
      "Training epochs: 76 Step 1100: loss: 0.138672\n",
      "Training epochs: 77 Step 1100: loss: 0.138672\n",
      "Training epochs: 78 Step 1100: loss: 0.138672\n",
      "Training epochs: 79 Step 1100: loss: 0.138672\n",
      "Training epochs: 80 Step 1100: loss: 0.138672\n",
      "Training epochs: 81 Step 1100: loss: 0.138672\n",
      "Training epochs: 82 Step 1100: loss: 0.138672\n",
      "Training epochs: 83 Step 1100: loss: 0.138671\n",
      "Training epochs: 84 Step 1100: loss: 0.138671\n",
      "Training epochs: 85 Step 1100: loss: 0.138671\n",
      "Training epochs: 86 Step 1100: loss: 0.138671\n",
      "Training epochs: 87 Step 1100: loss: 0.138671\n",
      "Training epochs: 88 Step 1100: loss: 0.138671\n",
      "Training epochs: 89 Step 1100: loss: 0.138671\n",
      "Training epochs: 90 Step 1100: loss: 0.138671\n",
      "Training epochs: 91 Step 1100: loss: 0.138671\n",
      "Training epochs: 92 Step 1100: loss: 0.138671\n",
      "Training epochs: 93 Step 1100: loss: 0.138671\n",
      "Training epochs: 94 Step 1100: loss: 0.138671\n",
      "Training epochs: 95 Step 1100: loss: 0.138671\n",
      "Training epochs: 96 Step 1100: loss: 0.138670\n",
      "Training epochs: 97 Step 1100: loss: 0.138670\n",
      "Training epochs: 98 Step 1100: loss: 0.138670\n",
      "Training epochs: 99 Step 1100: loss: 0.138670\n",
      "Training epochs: 100 Step 1100: loss: 0.138670\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2b0e7a29808>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "training_epochs2 = 100\n",
    "for i in range(training_epochs2):\n",
    "    loss_ = loss(x_data,w,b,y_data)\n",
    "    loss_list.append(loss_)\n",
    "    gw,gb = grad(x_data,w,b,y_data)\n",
    "    w.assign_sub(gw*learning_rate)\n",
    "    b.assign_sub(gb*learning_rate)\n",
    "    print(\"Training epochs:\",\"%02d\" % (i+1),\"Step %03d:\" % (step),\"loss: %.6f\" % (loss_))\n",
    "plt.plot(x_data,x_data*w.numpy()+b.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
